2166. Анаграммы

 

Слово называется анаграммой другого слова, если оно может быть получено перестановкой его букв.

 

Вход. Два слова заданы в отдельных строках. Слова состоят из строчных латинских букв и цифр. Длины слов не превышают 100.

 

Выход. Выведите YES, если слова являются анаграммами друг друга и NO в противоположном случае.

 

Пример входа

Пример выхода

sharm

marsh

YES

 

 

РЕШЕНИЕ

сортировка

 

Анализ алгоритма

Отсортируем буквы в каждом слове в лексикографическом порядке. Если полученные слова совпадают, то они состоят из одних и тех же букв и таким образом являются анаграммами.

 

Реализация алгоритма

Объявим рабочие строки s и q.

 

string s, q;

 

Читаем входные строки.

 

cin >> s;

cin >> q;

 

Сортируем буквы в каждой строке.

 

sort(s.begin(),s.end());

sort(q.begin(),q.end());

 

Сравниваем полученные строки и выводим ответ.

 

if (s == q) puts("YES"); else puts("NO");

 

Реализация алгоритма символьные массивы

 

#include <cstdio>

#include <cstring>

#include <algorithm>

using namespace std;

 

char s[100], q[100];

 

int main(void)

{

  gets(s); sort(s,s+strlen(s));

  gets(q); sort(q,q+strlen(q));

  if (strcmp(s,q) == 0) puts("YES"); else puts("NO");

  return 0;

}

 

Реализация алгоритма – обменная сортировка

 

#include <stdio.h>

#include <string.h>

#define MAX 256

 

char s[MAX], q[MAX];

int slen, qlen;

 

void sort(char *m, int len)

{

  int i, j;

  char temp;

  for(i = 0; i < len; i++)

  for(j = i + 1; j < len; j++)

    if (m[i] > m[j])

    {

      temp = m[i];

      m[i] = m[j];

      m[j] = temp;

    }

}

 

int main(void)

{

  gets(s); slen = strlen(s);

  gets(q); qlen = strlen(q);

 

  sort(s,slen);

  sort(q,qlen);

 

  if (!strcmp(s,q))

    printf("YES\n");

  else

    printf("NO\n");

  return 0;

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    char[] s = con.nextLine().toCharArray();

    char[] q = con.nextLine().toCharArray();

 

    Arrays.sort(s);

    Arrays.sort(q);

 

    if (Arrays.equals(s, q))

      System.out.println("YES");

    else

      System.out.println("NO");

   

   con.close();   

  }

}

 

Python реализация

 

l1 = list(input())

l2 = list(input())

l1.sort()

l2.sort()

if l1 == l2:

  print('YES')

else:

  print('NO')